package com.i2bt.util.tree;

import java.util.ArrayList;
import java.util.List;

/**
 * 
 * Title : 树形接口类
 *
 * Description : 定义树形的接口功能抽象方法
 *
 * CreatedTime : 2014-10-9
 *
 * @author wuliao & kakaxi & yi & flame
 *
 * @version 1.0
 *
 */
public interface ITree<T> {
	
	/**
	 * 添加单个 目录到当前路径下
	 * @param T 目录信息
	 */
	public void add(T t);
	
	/**
	 * 添加整个链表的目录到当前路径下
	 * @param T 信息链表
	 */
	public void add(ArrayList<T> list);
	
	/**
	 * 删除当前对应名称的目录
	 * @param s 目录名
	 */
	public void delete(String s);
	
	/**
	 * 删除当前目录对应索引的目录
	 * @param index 索引
	 */
	public void delete(int index);
	
	/**
	 * 删除当前对应链表中的所有索引的目录
	 * @param list 目录列表
	 */
	public void delete(ArrayList<Integer> list);
	
	/**
	 * 获取当前目录的根信息
	 * @return
	 */
	public T get();
	
	/**
	 * 获取当前目录下所有信息
	 * @return
	 */
	public List<T> getAll();
	
	/**
	 * 获取当前目录下对应名称的目录信息
	 * @param s 目录名称
	 * @return
	 */
	public T getChild(String s);
	
	/**
	 * 获取当前目录下对应索引的目录信息
	 * @param index 索引
	 * @return
	 */
	public T getChild(int index);
	
	/**
	 * 替换对应目录名称的目录
	 * @param s 目录名
	 * @param t 目录信息
	 */
	public void replace(String s, T t);
	
	/**
	 * 替换对应目录索引的目录
	 * @param i 索引
	 * @param t 目录信息
	 */
	public void replace(int index, T t);
	
	public void enter(String s);
	
	public void enter(int index);
	
	public void back();
	
}
